package Lee_code;

import java.util.Deque;
import java.util.LinkedList;

/**
 * @author blh
 * @date 2024年07月01日 9:11
 */
public class Lee_394_71 {
    int i=0;

    public String decodeString(String s) {
        StringBuilder sb = new StringBuilder();
        int len = s.length();
        while (i<len){
            if (Character.isAlphabetic(s.charAt(i))) {
                sb.append(s.charAt(i));
                i++;
            } // 进入了嵌套
            else if (Character.isDigit(s.charAt(i))) {
                sb.append(getStr(s));
            }
        }
        return sb.toString();
    }

    // 找到一个'[' 然后进行getStr
    public String getStr(String s) {
        // 首先拿到重复次数
        // 如果是数字
        int num = 0;
        while (Character.isDigit(s.charAt(i))) {
            num = num * 10 + Character.getNumericValue(s.charAt(i));
            i++;
        }
        // 现在的index指向'['
        StringBuilder res = new StringBuilder();
        StringBuilder temp = new StringBuilder();
        while (s.charAt(i) != ']') {
            if (s.charAt(i) == '[') {
                i++;
            } else if (Character.isAlphabetic(s.charAt(i))) {
                temp.append(s.charAt(i));
                i++;
            } else if (Character.isDigit(s.charAt(i))) {
                temp.append(getStr(s));
            }
        }
        // 指向下一个
        i++;
        for (int k = 0; k < num; k++) {
            res.append(temp);
        }
        return res.toString();
    }
}
